<?php

include_once '../models/Orden.php';
include_once '../models/Modelo.php';
include_once '../models/ModeloDeOrden.php';
include_once '../models/Prenda.php';
include_once '../models/Entrega.php';
include_once '../models/ConceptoFaltante.php';

class CtlOrdenes {

    public function __construct($paramForm) {

        error_reporting(E_ERROR | E_WARNING | E_PARSE);

        //echo "Construct: $paramForm[opcCtl]";
        //echo "<br>Construct: $paramForm[numOrden]";

        switch ($paramForm['opcCtl']) {
            case 1: $this->registrarReciboDeCorte($paramForm);
                break;

            case 2: $this->obtenerModelos($paramForm['idClie']);
                break;

            case 3: $this->obtenerDetallesDeOrden($paramForm['idOrden']);
                break;
            
            case 4: $this->asignarMaquilero($paramForm['idMaqui'], $paramForm['idOrden'], $paramForm['costo'], $paramForm['fecha']);
                break;
            
            case 5: $this->prendasPendientes($paramForm['idOrden']);
                break;
            
            case 6: $this->registrarEntrega($paramForm['idPrenda'], $paramForm['fecha'], $paramForm['cantidad']);
                break;
            
            case 7: $this->darDeBajaOrden($paramForm['idOrden']);
                break;
            
            case 8: $this->reporteOrdenes($paramForm);
                break;
        }
    }
    
    function reporteOrdenes ($paramForm) {
        
        include_once '../views/reportes/reporOrdenes.php';
        
        $orden = new Orden(null, null, null, null, null, null);
        
        if ($paramForm['accion'] == "ultimo") {
            
            
            $arrOrdenes = $orden->obtenerOrdenes("sin", "hoy");
            
            new ReporteOrdenes($arrOrdenes);
            
        } else {
            
            if (isset($paramForm['fechaFin']) && isset($paramForm['fechaIni'])){    
                
                $arrOrdenes = $orden->obtenerOrdenes($paramForm['fechaIni'], $paramForm['fechaFin']);
                new ReporteOrdenes($arrOrdenes);
   
            } else if (isset($paramForm['fechaIni'])) {
                
                $arrOrdenes = $orden->obtenerOrdenes($paramForm['fechaIni'], "hoy");
                new ReporteOrdenes($arrOrdenes);
                
            } else {
                
                echo "<h1>Ingrese Ambas Fechas</h1>";
            }
        }
    }

    function darDeBajaOrden ($idOrden) {
        $orden = new Orden(null, null, null, null);
        
        $orden->setEstadoAEliminada($idOrden);
        
        echo "<h1>Se ha borrado la orden</>";
    }
    
    #Obsoleto!!!!!
    function registrarEntrega ($idPrenda, $fecha, $cantidad) {
        $entrega = new Entrega(null, null, null, null, null);
        
        $entrega->registrar($idPrenda, $fecha, $cantidad);
        
        $prenda = new Prenda(null, null, null, null, null);
        $idOrden = $prenda->getIdOrdenPropietaria($idPrenda);
        $entre = new Entrega(null, null, null, null, null);
        $cantidadEntregada = $entre->getEntregadas($idOrden);
        
        $orden = new Orden(null, null, null, null);
        $ordenTemp = $orden->getOrdenByID($idOrden);
        
        if ($ordenTemp['cantidadprendas'] <= $cantidadEntregada) {
            $orden->setFechaEntrega($idOrden, $fecha);
        }
        
        if ($prenda->getCantidad($idPrenda) <= $entrega->obtenerCantidadEntregadaPorPrenda($idPrenda)) {
            $prenda->setEstado($idPrenda, 'T');
        }
        
        echo "<h1>Se ha registrado la entrega</>";
    }


    function prendasPendientes ($idOrden) {
        include_once '../views/ordenes/prendasPendientes.php';
        
        new PrendasPendientes($idOrden);
    }


    function asignarMaquilero ($idMaquilero, $idOrden, $costo, $fecha) {
        $orden = new Orden(null, null, null, null);
        
        $orden->asignarMaquilero($idMaquilero, $idOrden, $costo, $fecha);
        
        echo "<h1>Se han realizado los cambios</h1>";
    }

    function obtenerDetallesDeOrden($idOrden) {

        $orden = new Orden(null, null, null, null, null, null);

        $orden = $orden->getOrdenByID($idOrden);

        include '../views/ordenes/detallesOrden.php';
        
        new DetallesOrden($orden);
    }

    function obtenerModelos($idClie) {

        $modelo = new Modelo();

        $strModelo = "<option value = \"0\">Modelo de prenda</option>";
        $arrModelo = $modelo->obtenerModelos($idClie);
        while ($tempModelo = mysql_fetch_array($arrModelo)) {
            
            $strModelo .= "<option value=\"$tempModelo[idmodelo]\"> $tempModelo[clave] </option>";
        }

        echo $strModelo;

        //echo "<option value = \"0\">Selecciona un MODELO de prenda</option>";
    }

    function registrarReciboDeCorte ($paramForm) {
        
        //Extraemos los datos de la orden y la Registramos 
        $nuevaOrden = new Orden($paramForm['numOrden'], $paramForm['folio'], $paramForm['idCliente'], $paramForm['precioPrenda'], $paramForm['fechaLlegada'], $paramForm['costoMaquila']);
        
        if ($nuevaOrden->registrar($nuevaOrden)) {
        
            //Obtenemos el ID de la orden recien registrada
            $idOrden = $nuevaOrden->recuperarIdOrden($paramForm['numOrden'], $paramForm['fechaLlegada']);

            //Creamos un ModeloOrden, lo registramos y obtenemos su ID
            $nuevoModeloOrden = new ModeloDeOrden($idOrden, $paramForm['claveModelo'], $paramForm['desc']);
            $nuevoModeloOrden->registrar($nuevoModeloOrden);
            $idModeloOrden = $nuevoModeloOrden->getIdModeloDeOrden($idOrden, $paramForm['claveModelo']);

            $totalPrendas = 0;

            //Recorremos las prendas por talla/color y las registramos
            for ($i = 1; $i <= $paramForm['totalTipoPrenda']; $i++) {
                $talla = "idTalla" . $i;
                $color = "idColor" . $i;
                $cantidad = "cantidad" . $i;

                $totalPrendas += $paramForm[$cantidad];

                $nuevaPrenda = new Prenda($idModeloOrden, $paramForm[$talla], $paramForm[$color], $paramForm[$cantidad], "P");
                $nuevaPrenda->registrar($nuevaPrenda);
            }

            $nuevaOrden->setCantPrendas($idOrden, $totalPrendas);

            echo "<h1>Se ha registrado el recibo de corte</h1>";
        
        } else {
            echo "<h1>Ocurrio un error al registrar el registro de corte</h1>";
        }
    }

}

new CtlOrdenes($_GET);
?>